package com.company.mtp.device.api;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 应用安装结果类
 * 
 * @author mtp
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class InstallationResult {
    
    /**
     * 是否安装成功
     */
    private boolean success;
    
    /**
     * 设备ID
     */
    private String deviceId;
    
    /**
     * 应用包名
     */
    private String packageName;
    
    /**
     * 应用版本
     */
    private String appVersion;
    
    /**
     * 安装时间（毫秒）
     */
    private long installationTime;
    
    /**
     * 安装失败原因
     */
    private String failureReason;
    
    /**
     * 安装日志
     */
    private String installationLog;
    
    /**
     * 创建成功的安装结果
     * 
     * @param deviceId 设备ID
     * @param packageName 应用包名
     * @param appVersion 应用版本
     * @param installationTime 安装时间
     * @return 安装结果
     */
    public static InstallationResult success(String deviceId, String packageName, String appVersion, long installationTime) {
        return InstallationResult.builder()
                .success(true)
                .deviceId(deviceId)
                .packageName(packageName)
                .appVersion(appVersion)
                .installationTime(installationTime)
                .build();
    }
    
    /**
     * 创建失败的安装结果
     * 
     * @param deviceId 设备ID
     * @param packageName 应用包名
     * @param failureReason 失败原因
     * @param installationLog 安装日志
     * @return 安装结果
     */
    public static InstallationResult failure(String deviceId, String packageName, String failureReason, String installationLog) {
        return InstallationResult.builder()
                .success(false)
                .deviceId(deviceId)
                .packageName(packageName)
                .failureReason(failureReason)
                .installationLog(installationLog)
                .build();
    }
}